package vg.services.graph_view_manager.interfaces.graph_view;

import java.util.Collection;

import vg.services.data_base_manager.data.graph.Attribute;
import vg.services.data_base_manager.data.graph.Edge;
import vg.services.data_base_manager.data.graph.Vertex;

public interface ILowLevelEditGraphMethods {
	/**
	 * Sets types of graph: directed or undirected.
	 */
	public void setDirected(boolean directed);
	
	/**
	 * This method adds new vertex to graph.
	 */
	public void addVertex(Vertex vertex);
	
	/**
	 * This method adds new vertices to graph.
	 */
	public void addVertices(Collection<Vertex> vertices);

	/**
	 * This method adds new edge to graph.
	 */
	public void addEdge(Edge edge);
	
	/**
	 * This method adds new edges to graph.
	 */
	public void addEdges(Collection<Edge> edges);
	
	/**
	 * This methods adds new attribute to graph view for vertex.
	 */
	public void addAttribute4Vertex(Attribute attr, Vertex vertex);
	
	/**
	 * This methods adds new attribute to graph view for edge.
	 */
	public void addAttribute4Edge(Attribute attr, Edge edge);
	
	/**
	 * This methods sets graph model id.
	 */
	public void setGraphModelId(int graphModelId);
	
	/**
	 * This gets sets graph model id.
	 */
	public int getGraphModelId();
	
	/**
	 * This methods sets graph id.
	 */
	public void setGraphId(int graphId);
	
	/**
	 * This methods gets graph id.
	 */
	public int getGraphId();
}
